//********************************************************************************************************************//
//ORGANIZATION:
//AUTHOR: bpeng(bogers.peng@gmail.com)
//SUMMARY:
//********************************************************************************************************************//
#ifndef NATIVE_DOMAIN_COMPILING_SQL_COMMENT_H
#define NATIVE_DOMAIN_COMPILING_SQL_COMMENT_H

#ifndef NATIVE_DOMAIN_COMPILING_COMMON_FIELD_H
#include "Domain/Compiling/Common/Field.h"
#endif

namespace Native { namespace Compiling { namespace Sql
{
    //****************************************************************************************************************//
    //CComment
    //
    //****************************************************************************************************************//
    NATIVE_DECLARE_CONST_OBJECT(CComment, C_COMMENT);
    class NATIVE_LIBRARY_EXPORT CComment :
        public CField,
        public IEqualTo<CComment>
    {
    public:
        enum EStyle
        {
            STYLE_SINGLE = 0,
            STYLE_MULTI
        };

        NATIVE_DECLARE_OBJECT;
        
        NATIVE_DECLARE_PROPERTY(public, public, EStyle, Style, _style);
        NATIVE_DECLARE_PROPERTY(public, public, CString, Content, _content);

    public:
        CComment();
        CComment(C_COMMENT& that);
        CComment(C_COMMENT&& that);
        virtual ~CComment();
        //{CObject
        virtual wstring ToString() const;
        //}
        //{IEqualTo
        virtual bool operator==(C_COMMENT& rvalue) const;
        virtual bool operator!=(C_COMMENT& rvalue) const;
        //}
        //{CField
        virtual void Clear();
        virtual CString ToCode() const;
        //}
        C_COMMENT& operator=(C_COMMENT& rvalue);
    };
}}}

#endif